package com.person;

import cn.hutool.core.io.FileUtil;
import cn.hutool.poi.word.Word07Writer;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.person.model.entity.ComplaintAcceptance;
import com.person.model.entity.Contacts;
import com.person.model.entity.Department;
import com.person.service.ComplaintAcceptanceService;
import jakarta.annotation.Resource;
import org.apache.poi.xwpf.usermodel.*;
import org.apache.tomcat.util.http.fileupload.FileUtils;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.format.annotation.DateTimeFormat;

import java.awt.*;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;

@SpringBootTest
public class test {

    @Resource
    private ComplaintAcceptanceService complaintAcceptanceService;

    @Test
    public void test2() {
        ComplaintAcceptance byId = complaintAcceptanceService.getById(1);
        String situation = byId.getSituation();
        String[] split = situation.split("\n");
        System.out.println("这是输出的内容：" + split[3]);
    }

    @Test
    public void test88() {
        LambdaQueryWrapper<ComplaintAcceptance> complaintAcceptanceLambdaQueryWrapper = new LambdaQueryWrapper<>();
        complaintAcceptanceLambdaQueryWrapper.eq(ComplaintAcceptance::getSituation, null);
        ComplaintAcceptance complaintAcceptance = complaintAcceptanceService.getOne(complaintAcceptanceLambdaQueryWrapper);
        System.out.println("有没有：" + complaintAcceptance);
    }

    @Test
    public void test81() {
        String str = "限公司生产的北京2锅头酒不符合《消费者权益保护法》、《产品质量法》、《食品安全法》";
        String s;
        if (str.endsWith("。")) {
            s = str.replace(str.charAt(str.length() - 1), '，');
        } else {
            s = str + "，";
        }
        System.out.println(s);
    }

    @Test
    public void test83() {
        String[] contactPhone = {"123456", "123456", "8530"};
        HashSet<String> hashSet = new HashSet<>(Arrays.asList(contactPhone));
        String[] array = hashSet.toArray(new String[0]);
        String contactPhone1 = Arrays.toString(array);
        System.out.println(contactPhone1);
    }

    @Test
    public void test3() {
        System.setProperty("java.awt.headless", "false");
        String filePathStr = "E:/a/b";
        Path filePath = Paths.get(filePathStr);
        if (!Files.exists(filePath)) {
            try {
                Files.createDirectories(filePath);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        File folder = new File(filePathStr);
        Desktop desktop = Desktop.getDesktop();

        // 打开文件夹
        try {
            desktop.open(folder);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    @Test
    public void test1() {
        // 创建一个新的Word文档
        XWPFDocument document = new XWPFDocument();

        // 创建一个表格
        XWPFTable table = document.createTable(1, 6);

        // 设置表格样式
        for (XWPFTableRow row : table.getRows()) {
            for (XWPFTableCell cell : row.getTableCells()) {
                cell.setText(" ");
                cell.setColor("auto");
                cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
            }
        }

        // 填充表格内容
        fillTable(table);

        // 写入文件
        try (FileOutputStream out = new FileOutputStream("e:/output.docx")) {
            try {
                document.write(out);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        // 关闭文档
        try {
            document.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private static void fillTable(XWPFTable table) {
        // 示例数据填充，根据实际需求调整
        table.getRow(0).getCell(0).setText("来源分类");
        table.getRow(0).getCell(1).setText("监督检查");
        table.getRow(0).getCell(2).setText("投诉、举报");

        // 继续填充其他单元格...
    }

    //案件来源登记表
    @Test
    public void getResourceAsStream() {
        InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream("templates/3案件来源登记表.docx");

        // 打开输入流读取Word文档
        assert resourceAsStream != null;
        XWPFDocument document;
        try {
            document = new XWPFDocument(resourceAsStream);

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        // 获取第一个表格
        XWPFTable table = document.getTables().get(0);

        // 假设我们要修改第二行的第二列数据
        XWPFTableCell cell1 = table.getRow(1).getCell(1);// 注意：索引从0开始
        String text = cell1.getText(); //收到材料时间

        XWPFTableCell cell2 = table.getRow(6).getCell(4);// 注意：索引从0开始
        System.out.println(cell2.getText()); //起诉人名字

        XWPFTableCell cell3 = table.getRow(6).getCell(6);// 注意：索引从0开始
        System.out.println(cell3.getText()); //起诉人身份证号

        XWPFTableCell cell4 = table.getRow(7).getCell(3);// 注意：索引从0开始
        System.out.println(cell4.getText()); //联系电话

        XWPFTableCell cell5 = table.getRow(8).getCell(3);// 注意：索引从0开始
        System.out.println(cell5.getText()); //起诉人地址

        XWPFTableCell cell6 = table.getRow(9).getCell(3);// 注意：索引从0开始
        System.out.println(cell6.getText());//移送、交办部门名称

        XWPFTableCell cell7 = table.getRow(10).getCell(3);// 注意：索引从0开始
        System.out.println(cell7.getText());//移送、交办部门联系人

        XWPFTableCell cell8 = table.getRow(10).getCell(5);// 注意：索引从0开始
        System.out.println(cell8.getText());//移送、交办部门联系电话

        XWPFTableCell cell9 = table.getRow(11).getCell(3);// 注意：索引从0开始
        System.out.println(cell9.getText());//移送、交办部门联系地址

        XWPFTableCell cell10 = table.getRow(12).getCell(2);// 注意：索引从0开始
        System.out.println(cell10.getText());//当事人名字

        XWPFTableCell cell11 = table.getRow(13).getCell(2);// 注意：索引从0开始
        System.out.println(cell11.getText());//当事人住所

        XWPFTableCell cell12 = table.getRow(14).getCell(2);// 注意：索引从0开始
        System.out.println(cell12.getText());//当事人联系电话

        XWPFTableCell cell13 = table.getRow(15).getCell(1);// 注意：索引从0开始
        System.out.println(cell13.getText());//案源内容
    }

    //投诉登记表
    @Test
    public void getTouSu() {
        InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream("templates/1投诉登记表.docx");

        // 打开输入流读取Word文档
        assert resourceAsStream != null;
        XWPFDocument document;
        try {
            document = new XWPFDocument(resourceAsStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        // 获取第一个表格
        XWPFTable table = document.getTables().get(0);

        // 假设我们要修改第二行的第二列数据
        XWPFTableCell cell1 = table.getRow(0).getCell(2);// 注意：索引从0开始
        System.out.println(cell1.getText());//投诉人姓名

        XWPFTableCell cell2 = table.getRow(0).getCell(4);// 注意：索引从0开始
        System.out.println(cell2.getText()); //联系电话

        XWPFTableCell cell3 = table.getRow(1).getCell(2);// 注意：索引从0开始
        System.out.println(cell3.getText()); //住址

        XWPFTableCell cell4 = table.getRow(2).getCell(2);// 注意：索引从0开始
        System.out.println(cell4.getText()); //被投诉人名称

        XWPFTableCell cell5 = table.getRow(2).getCell(4);// 注意：索引从0开始
        System.out.println(cell5.getText()); //被投诉人联系人

        XWPFTableCell cell6 = table.getRow(3).getCell(2);// 注意：索引从0开始
        System.out.println(cell6.getText());//被投诉人地址

        XWPFTableCell cell7 = table.getRow(3).getCell(4);// 注意：索引从0开始
        System.out.println(cell7.getText());//被投诉人联系电话

        XWPFTableCell cell8 = table.getRow(4).getCell(1);// 注意：索引从0开始
        System.out.println(cell8.getText());//消费者权益争议事实
    }

    //举报登记表
    @Test
    public void getJuBao() {
        InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream("templates/2举报登记表.docx");

        // 打开输入流读取Word文档
        assert resourceAsStream != null;
        XWPFDocument document;
        try {
            document = new XWPFDocument(resourceAsStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        // 获取第一个表格
        XWPFTable table = document.getTables().get(0);

        // 假设我们要修改第二行的第二列数据
        XWPFTableCell cell1 = table.getRow(0).getCell(2);// 注意：索引从0开始
        System.out.println(cell1.getText());//投诉人姓名

        XWPFTableCell cell2 = table.getRow(0).getCell(4);// 注意：索引从0开始
        System.out.println(cell2.getText()); //联系电话

        XWPFTableCell cell3 = table.getRow(1).getCell(2);// 注意：索引从0开始
        System.out.println(cell3.getText()); //住址

        XWPFTableCell cell4 = table.getRow(2).getCell(2);// 注意：索引从0开始
        System.out.println(cell4.getText()); //被投诉人名称

        XWPFTableCell cell5 = table.getRow(3).getCell(2);// 注意：索引从0开始
        System.out.println(cell5.getText()); //被投诉人联系地址

        XWPFTableCell cell6 = table.getRow(4).getCell(1);// 注意：索引从0开始
        System.out.println(cell6.getText());//违法的法律法规
    }

    //不予立案审批表
    @Test
    public void getBuLiAn() {
        InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream("templates/4不予立案审批表.docx");

        // 打开输入流读取Word文档
        assert resourceAsStream != null;
        XWPFDocument document;
        try {
            document = new XWPFDocument(resourceAsStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        // 获取第一个表格
        XWPFTable table = document.getTables().get(0);

        // 假设我们要修改第二行的第二列数据
        XWPFTableCell cell1 = table.getRow(0).getCell(3);// 注意：索引从0开始
        System.out.println(cell1.getText());//投诉人姓名

        XWPFTableCell cell2 = table.getRow(1).getCell(3);// 注意：索引从0开始
        System.out.println(cell2.getText()); //统一社会信用代码

        XWPFTableCell cell4 = table.getRow(2).getCell(3);// 注意：索引从0开始
        System.out.println(cell4.getText()); //被投诉人名称

        XWPFTableCell cell5 = table.getRow(5).getCell(2);// 注意：索引从0开始
        System.out.println(cell5.getText()); //被投诉人联系地址

        XWPFTableCell cell6 = table.getRow(6).getCell(1);// 注意：索引从0开始
        System.out.println(cell6.getText());//案由

        XWPFTableCell cell7 = table.getRow(7).getCell(1);// 注意：索引从0开始
        System.out.println(cell7.getText());//收到材料时间

        XWPFTableCell cell8 = table.getRow(8).getCell(1);
        System.out.println(cell8.getText());
    }

    //立案审批表
    @Test
    public void getLiAn() {
        InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream("templates/5立案审批表.docx");

        // 打开输入流读取Word文档
        assert resourceAsStream != null;
        XWPFDocument document;
        try {
            document = new XWPFDocument(resourceAsStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        // 获取第一个表格
        XWPFTable table = document.getTables().get(0);

        // 假设我们要修改第二行的第二列数据
        XWPFTableCell cell1 = table.getRow(0).getCell(3);// 注意：索引从0开始
        System.out.println(cell1.getText());//投诉人姓名

        XWPFTableCell cell2 = table.getRow(1).getCell(3);// 注意：索引从0开始
        System.out.println(cell2.getText()); //统一社会信用代码

        XWPFTableCell cell4 = table.getRow(2).getCell(3);// 注意：索引从0开始
        System.out.println(cell4.getText()); //被投诉人名称

        XWPFTableCell cell5 = table.getRow(5).getCell(2);// 注意：索引从0开始
        System.out.println(cell5.getText()); //被投诉人联系地址

        XWPFTableCell cell6 = table.getRow(6).getCell(1);// 注意：索引从0开始
        System.out.println(cell6.getText());//案由

        XWPFTableCell cell7 = table.getRow(7).getCell(1);// 注意：索引从0开始
        System.out.println(cell7.getText());//收到材料时间

        XWPFTableCell cell8 = table.getRow(8).getCell(1);
        System.out.println(cell8.getText());
    }

}
